package com.xuanyue.db.xuan.core.table;

import java.util.List;

import com.xuanyue.db.xuan.core.table.expr.ExprValue;
import com.xuanyue.db.xuan.core.table.expr.SortTemplate;
import com.xuanyue.db.xuan.msg.VLAUETYPE;
import com.xuanyue.db.xuan.msg.X2YValue;

/**
 * 列接口
 * @author 解观海
 * @email  guanhaixie@sina.cn
 * @date 2020年6月23日
 *
 */
public interface IColumn extends IPersistence,ICheckType,IExprExe{


	/**添加或更新*/
	public void set(int rowId,ExprValue value);
	/**持久化一行数据库*/
	public void saveRow(int rowId);
	/**读取数据*/
	public Object get(int rowId);
	public ExprValue getExprValue(int rowId);
	
	
	/**
	 * 刷新最大ID
	 * @param maxId
	 */
	public void flush(int maxId);
	/**
	 * 数据列占用的bit向量个数
	 * @return
	 */
	public int getDataSize();
	/**
	 * 数据的bit向量封装为排序单元。
	 * @param isDesc  
	 * @param names  针对 Mapboolean，或者MapUNumber的情况，需要按照其指定的key排序。
	 * @return
	 */
	//public List<ISortElement> getSortE(boolean isDesc,String ...names);
	
	public List<ISortElement> getSortE(SortTemplate sortTemplate);
	
	/**
	 * 检查列排序是否支持
	 * @param isDesc
	 * @param names
	 * @return
	 */
	public boolean checkSortE(SortTemplate sortTemplate);
	/**
	 * 数据类型
	 * @return
	 */
	public VLAUETYPE getType();
	
	public void init();
	/**
	 * 更新
	 * @param newOne
	 * @return
	 * @author 解观海
	 * @date 2021年1月8日
	 */
	public boolean modify(IColumn newOne,boolean cpDataFromOld);
//	public void toBatchLoadMode();
	
}
